#pragma once
#include "StateVector.h"

template <typename T, typename S>
class StateVector2
	: public StateVector<T>
{
public:
	StateVector2()
	{}

	StateVector2( const T& t0, const S& t1 )
	{
		mS0 = t0;
		mS1 = t1;
	}
	StateVector2( const StateVector2<T,S>& sv )
	{
		mS0 = sv.mS0;
		mS1 = sv.mS1;
	}

	const StateVector2<T,S>& operator=(const StateVector2<T,S>& rhs)
	{
		mS0 = rhs.mS0;
		mS1 = rhs.mS1;

		return (*this);
	}

	StateVector2<T,S> operator+(const StateVector2<T,S>& rhs) const
	{
		StateVector2<T,S> result;
		result.mS0 = mS0 + rhs.mS0;
		result.mS1 = mS1 + rhs.mS1;

		return result;
	}

	const StateVector2<T,S>& operator+=(const StateVector2<T,S>& rhs)
	{
		mS0 += rhs.mS0;
		mS1 += rhs.mS1;

		return (*this);
	}

	StateVector2<T,S> operator*(double scalar) const
	{
		StateVector2<T,S> result;
		result.mS0 = mS0 * scalar;
		result.mS1 = mS1 * scalar;
		return result;
	}

	T mS0;
	S mS1;
};